package org.doubletype.ossa.truetype;

import java.util.ArrayList;

public class TTPixelSize {
	static private int s_em = 1024;
	static private boolean s_isInitialized = false;
	static private ArrayList<TTPixelSize> s_list = new ArrayList<>();
	
	static public int getEm() {
		return s_em;
	}
	
	static public ArrayList<TTPixelSize> getList() {
		initList();
		return s_list;
	}
	
	static private void initList() {
		if (s_isInitialized)
			return;
		
		s_isInitialized = true;
		
		// s_list.add(new TTPixelSize(9, "9px: 7pt(96dpi)/9pt(72dpi)"));
		// s_list.add(new TTPixelSize(10, "10px: 7.5pt(96dpi)/10pt(72dpi)"));
		s_list.add(new TTPixelSize(11, "11px: 8pt(96dpi)/11pt(72dpi)"));
		s_list.add(new TTPixelSize(12, "12px: 9pt(96dpi)/12pt(72dpi)"));
		s_list.add(new TTPixelSize(13, "13px: 10pt(96dpi)/13pt(72dpi)"));
		s_list.add(new TTPixelSize(14, "14px: 10.5pt(96dpi)/14pt(72dpi)"));
		s_list.add(new TTPixelSize(15, "15px: 11pt(96dpi)/15pt(72dpi)"));
		s_list.add(new TTPixelSize(16, "16px: 12pt(96dpi)/16pt(72dpi)"));
		s_list.add(new TTPixelSize(17, "17px: 13pt(96dpi)/17pt(72dpi)"));
		s_list.add(new TTPixelSize(18, "18px: 13.5pt(96dpi)/18pt(72dpi)"));
		s_list.add(new TTPixelSize(19, "19px: 14pt(96dpi)/14pt(72dpi)"));
		s_list.add(new TTPixelSize(20, "20px: 15pt(96dpi)/20pt(72dpi)"));
		s_list.add(new TTPixelSize(21, "21px: 16pt(96dpi)/21pt(72dpi)"));
		s_list.add(new TTPixelSize(22, "22px: 16.5pt(96dpi)/22pt(72dpi)"));
		s_list.add(new TTPixelSize(23, "23px: 17pt(96dpi)/23pt(72dpi)"));
		s_list.add(new TTPixelSize(24, "24px: 18pt(96dpi)/24pt(72dpi)"));
		s_list.add(new TTPixelSize(27, "27px: 20pt(96dpi)"));
		s_list.add(new TTPixelSize(29, "29px: 22pt(96dpi)"));
		s_list.add(new TTPixelSize(32, "32px: 24pt(96dpi)"));
		s_list.add(new TTPixelSize(33, "33px: 8pt(300dpi) "));
		// s_list.add(new TTPixelSize(35, "35px: 26pt(96dpi) "));
		s_list.add(new TTPixelSize(37, "37px: 28pt(96dpi)"));
		// s_list.add(new TTPixelSize(38, "38px: 9pt(300dpi)");
		s_list.add(new TTPixelSize(42, "42px: 10pt(300dpi)"));
		// s_list.add(new TTPixelSize(44, "44px: 10.5pt(300dpi)"));
		s_list.add(new TTPixelSize(46, "46px: 11pt(300dpi)"));
		s_list.add(new TTPixelSize(50, "50px: 12pt(300dpi)"));
		s_list.add(new TTPixelSize(54, "54px: 13pt(300dpi)"));
		s_list.add(new TTPixelSize(58, "58px: 14pt(300dpi)"));
		s_list.add(new TTPixelSize(67, "67px: 16pt(300dpi)"));
		s_list.add(new TTPixelSize(75, "75px: 18pt(300dpi)"));
		s_list.add(new TTPixelSize(83, "83px: 20pt(300dpi)"));
		s_list.add(new TTPixelSize(92, "92px: 22pt(300dpi)"));
		s_list.add(new TTPixelSize(100, "100px: 24pt(300dpi)"));
	}
	
	private int m_pixel;
	private String m_description;
	private int m_pixelWidths[];
	private int m_maxPixelWidth = 0;
	
	public TTPixelSize(int a_pixel, String a_description)
	{
		m_pixel = a_pixel;
		m_description = a_description;
	}
	
	public int getPixel() {
		return m_pixel;
	}
	
	public String getDescription() {
		return m_description;
	}
	
	/**
	 * sets the size of the pixel widths. Use num of glyphs.
	 * @param a_size
	 */
	public void setPixelWidthsSize(int a_size) {
		m_pixelWidths = new int[a_size];
		m_maxPixelWidth = 0;
	}
	
	public void setPixelWidth(int a_glyphIndex, int a_value) {
		m_pixelWidths[a_glyphIndex] = a_value;
		if (a_value > m_maxPixelWidth) {
			m_maxPixelWidth = a_value;
		} // if
	}
	
	public int [] getPixelWidths() {
		return m_pixelWidths;
	}
	
	public int getPixelWidth(int a_glyphIndex) {
		return m_pixelWidths[a_glyphIndex];
	}
	
	public int getMaxPixelWidth() {
		return m_maxPixelWidth;
	}
}
